package com.smart.thrift.model.common;

import lombok.*;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ThriftServiceSignature {

    /**
     * 服务名，@ThriftService name属性，可以自定义，默认取服务类名
     */
    private String serviceName;

    /**
     * 具体提供服务的类,被@ThriftService注释的类
     */
    private Class<?> targetServiceClass;

    /**
     *  服务类，targetServiceClass实现的类，即具体提供服务的类实现的接口
     */
    private List<Class<?>> thriftServiceClasses;

    /**
     * 服务提供的版本
     */
    private double version;


    public Set<String> markersByServiceClass() {
        Set<String> result = new HashSet<>();
        result.add(String.join("$", new String[]{serviceName, String.valueOf(version)}));
        for (Class<?> thriftServiceClass : thriftServiceClasses) {
            result.add(String.join("$", new String[]{thriftServiceClass.getName(), String.valueOf(version)}));
        }
        return result;
    }
}
